Contact centers are employed by many enterprises to service customer contacts. A typical contact center includes a switch and/or server to receive and route incoming packet-switched and/or circuit-switched contacts and one or more resources, such as human agents and automated resources (e.g., Interactive Voice Response (IVR) units), to service the incoming contacts. Contact centers distribute contacts, whether inbound or outbound, for servicing to any suitable resource according to predefined criteria. In many existing systems, the criteria for servicing the contact from the moment that the contact center becomes aware of the contact until the contact is connected to an agent are customer-specifiable (i.e., programmable by the operator of the contact center), via a capability called vectoring. Normally in present-day Automated Contact Distributors (ACDs) when the ACD system's controller detects that an agent has become available to handle a contact, the controller identifies all predefined contact-handling queues for the agent (usually in some order of priority) and delivers to the available agent the highest-priority oldest contact that matches the agent's highest-priority queue.
Many existing contact centers have a need to record agent activity, or at least the activity of a contact center agent's work station, to help monitor and analyze the efficiency of the agent. Unfortunately, in many communication protocols, call control of media streams requires multiple controllers. As an example, the simple act of recording a media stream in SIP requires many resources, each of which are required to communicate with one another to synchronize the call recording process. The synchronization utilizes important network bandwidth due to the exchange of messages and also introduces latency into the transmission of the media stream and/or introduces delays into the controls, both of which are not desirable. An additional complication is that each desired media stream is traditionally recorded as two or more separate files, thereby limiting the streaming rate to disk and further increasing latency and disk fragmentation.